1. Field of the Invention
The present invention relates to the field of computer graphics, and in particular to a method and apparatus for sampling on a non-power-of-two pixel grid.
Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all rights whatsoever.
2. Background Art
In the field of computer graphics, there are conventionally two methods for reducing stair step like lines that should be smooth. These step like lines are called artifacts, aliases, or jaggies, and the two conventional methods are antialiasing and smoothing. Jaggies occur because the output devices such as a monitor or printer do not have a high enough resolution to represent a smooth line.
Smoothing
Smoothing is a technique used by some printers to make curves look smoother. Most printers that support smoothing implement it by reducing the size of the pixels that make up a curved line. In addition, some printers can also alter the horizontal alignment of the dots to minimize jaggies.
Antialiasing
Antialiasing, which is sometimes called oversampling, is a software technique for diminishing jaggies by surrounding the stair steps with intermediate shades of gray or color. Although this reduces the jagged appearance of the lines, it also makes them fuzzier. In order to do antialiasing, it is necessary to sample the pixels using a sampling technique, for example multisampling or super sampling. Multisample antialiasing is useful for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the “smooth” antialiasing mechanism provided by the base GL may result in a higher quality image, and allow multisample and smooth antialiasing techniques to be alternated during the rendering of a single scene. Furthermore, the quality of the multisampled frame buffer can be selected by specifying the pixel format to the desired number of samples per pixel.
In current computer graphics, antialiasing includes a pipeline starting from an application and ending in the display of a given image. This pipeline is illustrated in FIG. 1, where step 100 shows the application used to render the graphics. Step 110 is the commands of the application used to render the graphics. Step 120 is the calculation of the geometry that best covers the graphics to be rendered. Step 130 rasterizes the graphics. Step 140 calculates the texture (if any) for the given graphics. Step 150 is the breaking up of the graphics into smaller pieces or fragments before it is displayed at step 160.
Conventionally, when an image pixel is sampled using a multisampling approach it is first subdivided into a sample grid of size N×N. “N” is a power of two so that the grid might be, e.g. 4×4, 8×8, 16×16, etc. Typically, the number of subsamples taken in the grid is also a power of two such as 1, 2, 4, or 8 samples per pixel depending on the precision needed. Prior art uses a power of two because multiplies and divides are shifts and adds, which are easy and fast to perform in a digital binary system.
Model View Projection Transform
One prior art method for performing antialiasing is the model view projection transform, which can be broken up into four steps. The first step is to convert all objects in a given projection field to a model coordinate system. For example, if the screen of a monitor were to be a window, then the model coordinate system would be the size of the screen in two dimensional coordinates, and a reference point on the screen—maybe the bottom left corner—is chosen and given coordinates 0, 0. The extremities of all the objects within this screen would be referenced to this reference point, or in other words the coordinates of the extremities of all the objects within this screen is calculated based on the 0,0 coordinates of the reference point. Next, the viewer is placed within this projection field, and all objects within this field are now referenced with respect to the viewer. This means that all objects within the projection field are referenced with respect to the height of the viewer, the direction faced by the viewer, and the two dimensional distance each object has to the placement of this viewer within the field. Next, the perspective of the projection of each object is taken into account. For example, an object further away from the viewer appears smaller than an object closer to the viewer. Also, objects behind other opaque objects are hidden from the perspective view of the viewer. Finally, a projective divide takes the end points of all the objects and maps them to a two dimension coordinate display grid.
Good conventional computer graphics sample an image using 8 samples per pixel. But this requires large amounts of data to be processed, stored and moved around on a system bus, which reduces the effective bandwidth per pixel of the system. What is needed is a sub-sample frequency N of size smaller than 8 which gives the same if not better results than a sub-sample frequency of size 8, and also uses less bandwidth per pixel.